The present invention relates to data networking, and in one embodiment, more particularly to data-networking protocols.
Traditional Internet Protocol (IP) communication allows a host to send packets to a single host (unicast transmission) or to all hosts (broadcast transmission). To support a demand to provide applications such as audio and video conference calls, audio broadcasting, and video broadcasting that involve high data rate transmission to multiple hosts, a third routing technique has evolved, multicast routing. In multicast routing, a host sends packets to a subset of all hosts as a group transmission. Multicast routing protocols have been developed to conserve bandwidth by minimizing duplication of packets. To achieve maximum efficiency delivery of data, rather than being replicated at the source, multicast packets are replicated in a network at the point where paths to multiple receivers diverge.
In large part, multicast routing protocols rely on the same underlying Internet infrastructure that supports unicast routing. One key difference is that whereas unicast routing is generally based on a destination IP address of the packet, multicast routing protocols typically make forwarding decisions based on a group address that identifies a group of intended recipients and possibly also on an address of the packet source.
There are, however, important differences between unicast and multicast operation besides the nature of the addresses used. Unicast forwarding is a simpler process involving a route look-up for the destination IP address of the packet being forwarded. The look-up returns a next-hop node and a forwarding interface used to get to the next hop. A very important characteristic of the unicast forwarding process is the possibility of performing the route look-up in a pre-computed database called the FIB. As far as the forwarding process is concerned, during the route look-up the FIB can be considered static. Over a longer time scale, the FIB contents will change as routing protocols convey updates resulting from changes in network connectivity and configuration.
However, the assumption that the FIB remains static during a particular route look-up and does not change in response to receipt of a packet to be forwarded allows for a highly beneficial modularization of the router architecture. A high speed forwarding engine performs the route look-ups and takes action based on the results. A routing processor implements control plane functionality by populating the FIB and modifying its contents as network connectivity and configuration change.
By contrast, however, multicast routing implementations cannot currently take advantage of this type of modularization. Most multicast routing protocols in use today are data driven. They use the reception of multicast packets to be forwarded to infer portions of the current network topology used to forward packets including the very packets from whose receipt topology has been inferred. Receipt of a multicast packet can be interpreted as an event signal to modify the contents of a multicast FIB (MFIB). The resulting MFIB modification may effect the handling of the received packet that caused the modification.
Therefore, instead of a crisp modularization between the multicast forwarding engine and the routing processor that operates the multicast protocols, there is a highly complex interaction between these elements. The forwarding engine maintains some awareness of protocol state. Also, packets that affect multicast routing state may not be fully handled immediately by the forwarding engine alone but may first be transferred to the routing processor.
This lack of separation between control and forwarding greatly complicates the design of multicast forwarding engines. Furthermore, changes in multicast routing protocol operation require changes to the implementation of the forwarding engine and not just the routing processor. Also, the need to transfer certain multicast packets to the routing processor via what is typically a relatively low bandwidth connection increases packet handling latency.
What is needed are improved systems and methods for handling data-driven protocols such as multicast routing protocols.